<?php namespace Common\Model;
use \Hdphp\Model\Model;
class Cate extends Model{
	protected $table="category";
//	自动验证，固定写法
	 protected $validate=array(
			array('cname','required','分类名称不能为空',3,3),
			array('cname','maxlen:20','分类名称不能超过20',3,3),
			array('csort','num:0,65535','排序号必须是0-65535之间',3,3),
		
	);
//	自定义store方法
	public function store(){
//		用create方法判断是不是通过验证，返回的是true或者false
		if($this->create()){
//			如果通过验证则添加到数据库中,并且返回值是添加的主键ID
			 return $this->add();
		}else{
			return false;
		}
		
	}
	
//	自定义一个模型编辑方法
	public function edit(){
//	   判断是不是符合自动验证
			if($this->create()){
//			现在模板页面里设置隐藏域 save只有有主键的是可以自动添加，不用传递array（）；
				$this->save();
				return true;
			}
			return false;
	}
//	自定义一个筛选出除了要编辑的自己和自己的子分类的分类
	public function getNoMy($cid){
//		获得当前的子类的cid
		$cids=$this->getSon($this->get(),$cid);
//		同时把自己的cid压入数据，这样就找齐了 自己和自己子分类的cid
		$cids[]=$cid;
	
//		组合sql语句获得除了数组中的cid的分类
		$catedata=$this->where("cid not in(".implode(',', $cids).")")->get();
//		$data = $this->where("cid NOT IN(" . implode(',', $cids) . ")")->get();
//		树状话数组 		
		$catedata=Data::tree($catedata,'cname');
		return $catedata;
	}
	public function getSon($data,$cid){
//	    对数组的遍历判断cid
//		定义一个空数组来接受找到的子类的cid
			$temp=array();
			foreach ($data as $v) {
//				找到和$cid一样的pid
				if($v['pid']==$cid){
					$temp[]=$v['cid'];
//					递归获得和子类的cid一样的子类的子类
					$temp=array_merge($temp,$this->getSon($data,$v['cid']));
				}
			}
			return $temp;
	}
	
}

 ?>